<?php Configure::write('debug', 0); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <?php echo $html->charset(); ?>
        <title><?php echo $this->element('pageTitle') . $title_for_layout; ?></title>
        <?php
        echo $html->meta('icon');
        echo $html->css('print');
        echo $html->css('style');

        // ถ้า browser ผู้ใช้ คือ IE
        if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE) {
            echo $html->css('print_ie');
        }

        echo $javascript->link('prototype');
        echo $javascript->link('jquery/jquery-1.3.2.min');
        ?>
        <script type="text/javascript" >
            //ต้องมีคำสั่งนี้เพื่อให้ jQuery ใช้งานกับ javascript framework อื่น ๆ ได้
            var $j = jQuery.noConflict();

            $j(function() {
                //ความสูงรวม 1 หน้ากระดาษ A4 ประมาณ 900 pixel
                var PAGE_HEIGHT;
                if ($j.browser.msie == true) {
                    if (parseFloat($j.browser.version) < 8.0) {
                        PAGE_HEIGHT = 870;
                    } else {
                        PAGE_HEIGHT = 850;
                    }
                } else {
//                    PAGE_HEIGHT = 950;
                    PAGE_HEIGHT = 850;
                }
                var pages = $("pages");
                var totalHeight = $("container").getHeight();
//                alert(totalHeight);
                // ถ้าความสูงรวมเกิน 1 หน้า
                if (totalHeight > PAGE_HEIGHT) {
                    var pageNo = 1;
                    var head = $j("#head");
                    var foot = $("foot");
                    var tableHead = $j("#tableHead");

                    var headHeight = head != null? head.height() : 0;
                    var footHeight = foot != null? foot.getHeight() : 0;
                    var theadHeight = tableHead != null? tableHead.height() : 0;
                    var currentPageHeight = headHeight;

                    // แถวข้อมูลทั้งหมด
                    var rows = $("tableBody").childElements();

                    // ความสูงแต่ละแถว
                    var rowsHeight;
                    // ถ้าเป็น IE มี bug กับ layout ใน tr ใช้ td แทน
                    if ($j.browser.msie == true) {
                        var rowsTd = $$(".rowTd");
                        rowsHeight = [];
                        rowsTd.invoke("getHeight").each(function(val) {
                            rowsHeight.push(val);
                        });
                    } else {
                        rowsHeight = rows.invoke("getHeight");
                    }

                    // สร้างหน้าแรก
                    var page = new Element("div", {id: "page" + pageNo, className: "page"});
                    page.setStyle({height: PAGE_HEIGHT + "px"});
                    page.insert($("head"));
                    pages.update(page);

                    // สร้าง div main
                    var divMain = new Element("div", {id: "divMain" + pageNo});
                    page.insert(divMain);
                    divMain.addClassName("main");

                    if ($("watermark") != null) {
                        $j("#watermark").clone().appendTo("#divMain" + pageNo);
                    }

                    // สร้างตาราง
                    var pageTable = new Element("table", {id: "pageTable" + pageNo, cellspacing: "0", cellpadding: "0"});
                    divMain.insert(pageTable);
                    pageTable.addClassName("dataTable");

                    // ใส่หัวตาราง
                    tableHead.clone().prependTo("#pageTable" + pageNo);
                    currentPageHeight += theadHeight;

                    // แถวปัจจุบัน
                    var rowNo = 0;

                    // วนลูปแต่ละแถว
                    rows.each(function(e) {
                        var row = $j(e);
                        row.appendTo($j("#pageTable" + pageNo));
                        currentPageHeight += rowsHeight[rowNo];
                        rowNo++;
                        // ถ้าแถวถัดไป 2 แถวยาวเกินหน้า
                        var nextRow = rowsHeight[rowNo] || 0;
                        var next2Row = rowsHeight[rowNo + 1] || 0;
//                        alert(currentPageHeight + " " + nextRow + " " + next2Row  + " " + footHeight + " " + (currentPageHeight + nextRow + next2Row + footHeight + 10));
                        if (currentPageHeight + nextRow + next2Row + footHeight + 10 >= PAGE_HEIGHT) {
                            if (row.hasClass("emptyRow")) {
                                throw $break;
                            }

                            // ใส่ footer
                            $j("#foot").clone().appendTo("#page" + pageNo);
                            // ขึ้นหน้าใหม่
                            pageNo++;

                            // สร้างหน้าใหม่
                            page = new Element("div", {id: "page" + pageNo, className: "page"});
                            page.setStyle({height: PAGE_HEIGHT + "px"});
                            pages.insert(page);

                            // ใส่ header
                            $j("#head").clone().appendTo("#page" + pageNo);
                            currentPageHeight = headHeight;

                            // สร้าง div main
                            var divMain = new Element("div", {id: "divMain" + pageNo});
                            page.insert(divMain);
                            divMain.addClassName("main");

                            if ($("forCustomer") != null) {
                                $j("#forCustomer").clone().appendTo("#divMain" + pageNo);
                            }

                            // สร้างตารางใหม่
                            var pageTable = new Element("table", {id: "pageTable" + pageNo, cellspacing: "0", cellpadding: "0"});
                            divMain.insert(pageTable);
                            pageTable.addClassName("dataTable");

                            // ใส่หัวตาราง
                            tableHead.clone().prependTo("#pageTable" + pageNo);
                            currentPageHeight += theadHeight;

                        }
                    });
                    page.insert(foot);
                    $("container").remove();

                    // ใส่หมายเลขหน้า
                    var no = 1;
                    $$(".pageNo").each(function(e) {
                        e.update((no++) + "/" + pageNo);
                    });
                }

                window.print();
            });
        </script>
    </head>
    <body id="body">
        <div id="pages"></div>
        <div id="container" style="float: left">
            <?php echo $content_for_layout; ?>
        </div>
    </body>
</html>

